import request from '@/utils/request'

/**
 * 获取学习资料列表
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getMaterialList(params) {
  return request({
    url: '/api/materials/list',
    method: 'get',
    params
  })
}

/**
 * 获取最新资料
 * @param {Number} limit - 获取数量
 * @returns {Promise}
 */
export function getLatestMaterials(limit = 4) {
  return request({
    url: '/api/materials/list',
    method: 'get',
    params: {
      page: 1,
      size: limit,
      orderBy: 'createTime',
      orderDir: 'desc'
    }
  })
}

/**
 * 获取学习资料详情
 * @param {String|Number} id - 资料ID
 * @returns {Promise}
 */
export function getMaterialDetail(id) {
  return request({
    url: `/api/materials/detail/${id}`,
    method: 'get'
  })
}

/**
 * 获取学习资料统计数据
 * @returns {Promise}
 */
export function getMaterialStats() {
  return request({
    url: '/api/materials/stats',
    method: 'get'
  })
}

/**
 * 下载学习资料
 * @param {String|Number} id - 资料ID
 * @returns {Promise}
 */
export function downloadMaterial(id) {
  return request({
    url: `/api/materials/${id}/download`,
    method: 'get',
    responseType: 'blob'
  })
}

/**
 * 收藏/取消收藏学习资料
 * @param {String|Number} id - 资料ID
 * @param {Boolean} isFavorite - 是否收藏
 * @returns {Promise}
 */
export function toggleFavoriteMaterial(id, isFavorite) {
  return request({
    url: `/api/materials/${id}/favorite`,
    method: 'post',
    data: { isFavorite }
  })
}

/**
 * 获取收藏的学习资料列表
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getFavoriteMaterials(params) {
  return request({
    url: '/api/materials/favorites',
    method: 'get',
    params
  })
}

/**
 * 提交学习资料评论
 * @param {String|Number} id - 资料ID
 * @param {Object} data - 评论数据
 * @returns {Promise}
 */
export function submitMaterialComment(id, data) {
  return request({
    url: `/api/materials/${id}/comments`,
    method: 'post',
    data
  })
}

/**
 * 获取学习资料评论列表
 * @param {String|Number} id - 资料ID
 * @param {Object} params - 查询参数
 * @returns {Promise}
 */
export function getMaterialComments(id, params) {
  return request({
    url: `/api/materials/${id}/comments`,
    method: 'get',
    params
  })
}

export default {
  getMaterialList,
  getLatestMaterials,
  getMaterialDetail,
  getMaterialStats,
  downloadMaterial,
  toggleFavoriteMaterial,
  getFavoriteMaterials,
  submitMaterialComment,
  getMaterialComments
} 